﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BOL;
using BLL;
using DAL;
using DevComponents.AdvTree;

namespace QLThueMuonXe
{
    public partial class frmGiaThue : UserControl
    {
        FormHangXe fhx = new FormHangXe();
        FormGiaXe fgt = new FormGiaXe();
        int id_gia;
        public frmGiaThue()
        {
            InitializeComponent();
            List<ThongTinHangXe> tthx = fhx.LayDSHangXe();
            cobhangxe.DataSource = tthx;
            cobhangxe.DisplayMember = "hangxe";
            cobhangxe.DisplayMember = "hangxe";
        }
        #region Điều khiển đóng/mở form
        private HamDungChung _Commands;
        /// <summary>
        /// Gets or sets the commands associated with the control.
        /// </summary>
        public HamDungChung Commands
        {
            get { return _Commands; }
            set
            {
                if (value != _Commands)
                {
                    HamDungChung oldValue = _Commands;
                    _Commands = value;
                    OnCommandsChanged(oldValue, value);
                }
            }
        }
        /// <summary>
        /// Called when Commands property has changed.
        /// </summary>
        /// <param name="oldValue">Old property value</param>
        /// <param name="newValue">New property value</param>
        protected virtual void OnCommandsChanged(HamDungChung oldValue, HamDungChung newValue)
        {
            if (newValue != null)
            {
                btndong.Command = newValue.dongfrmgiathue;
            }
            else
            {
                btndong.Command = null;
            }
        }
        #endregion
        private void frmGiaThue_Load(object sender, EventArgs e)
        {
            gtLoad();
        }

        private Node CreateXeRow(string hangxe, string giathue, string ngaapdung, string idgia)
        {
            Node node = new Node(hangxe);
            node.Cells.Add(new Cell(giathue));
            node.Cells.Add(new Cell(ngaapdung));
            node.Cells.Add(new Cell(idgia));
            return node;
        }


        public void gtLoad()
        {
            List<ThongTinGiaXe> ttg = fgt.LayDSGiaXe();
            advTree1.Nodes.Clear();
            foreach (var row in ttg)
            {
                advTree1.Nodes.Add(CreateXeRow(row.hangxe, String.Format("{0:0,0}",row.giathue), row.ngayapdung.Date.ToString("MM/dd/yyyy"), row.id_gia.ToString()));
            }
            advTree1.SelectedIndex = 0;
        }

        private void advTree1_AfterNodeSelect(object sender, AdvTreeNodeEventArgs e)
        {
            try
            {
                Node node = e.Node;
                cobhangxe.Text = node.Cells[0].Text;
                txtgiathue.Text = node.Cells[1].Text;
                dateTimeInputngayad.Text = node.Cells[2].Text;
                id_gia = int.Parse(node.Cells[3].Text);                
            }
            catch (Exception) { }
        }

        public void xoatrang()
        {
            txtgiathue.Text = "";
            cobhangxe.Text = "";
            dateTimeInputngayad.Value = System.DateTime.Now;

        }
        private void btnthem_Click(object sender, EventArgs e)
        {
            if (btnthem.Text == "Thêm Mới")
            {
                btnthem.Text = "Lưu";
                btnsua.Text = "Hủy Bỏ";
                xoatrang();
                this.advTree1.AfterNodeSelect -= new DevComponents.AdvTree.AdvTreeNodeEventHandler(this.advTree1_AfterNodeSelect);
            }
            else
            {
                if (txtgiathue.Text == "" )
                {
                    MessageBox.Show("Bạn chưa nhập đủ thông tin", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    //if (dateTimeInputngayad.Value.Date < System.DateTime.Now.Date)
                    //    MessageBox.Show("Ngày áp dụng phải lớn hơn ngày hiện tại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    //else
                    //{
                        //fx.themX(txtmaxe.Text, cobhangxe.Text, txttenxe.Text, txtbienso.Text);
                        fgt.themGiaXe(cobhangxe.Text, int.Parse(txtgiathue.Text), dateTimeInputngayad.Value);
                        MessageBox.Show("Thêm thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        btnthem.Text = "Thêm Mới";
                        btnsua.Text = "Sửa";
                        gtLoad();
                        this.advTree1.AfterNodeSelect += new DevComponents.AdvTree.AdvTreeNodeEventHandler(this.advTree1_AfterNodeSelect);
                   // }
                }
            }
        }

        private void btnsua_Click(object sender, EventArgs e)
        {
            if (btnsua.Text == "Sửa")
            {
                if (MessageBox.Show("Sửa thông tin giá thuê có thể làm thay đổi một số dữ liệu lúc trước.", "Thông báo", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)
                {
                    fgt.suaGiaxe(id_gia,cobhangxe.Text, int.Parse(txtgiathue.Text.Replace(",","")), dateTimeInputngayad.Value);
                    //fx.suaX(txtmaxe.Text.Trim(), cobhangxe.Text, txttenxe.Text, txtbienso.Text);
                    MessageBox.Show("Sửa thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    gtLoad();
                }
            }
            else
            {
                btnthem.Text = "Thêm Mới";
                btnsua.Text = "Sửa";
                this.advTree1.AfterNodeSelect += new DevComponents.AdvTree.AdvTreeNodeEventHandler(this.advTree1_AfterNodeSelect);
                advTree1.SelectedIndex = advTree1.SelectedIndex + 1;

            }
        }

        private void buttonX1_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Bạn muốn xóa  Giá này ? các thông tin liên quan có thể bị thay đổi", "Thông báo", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)
            {
                fgt.XoaGiaxXe(id_gia);
                //fx.XoaX(txtmaxe.Text.Trim());
                gtLoad();
            }
        }

        private void txtgiathue_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }

    }
}
